@@ -11,6 +11,20 @@ const router = new VueRouter({
|
||
| 11 | 11 |
routes |
| 12 | 12 |
}) |
| 13 | 13 |
|
| 14 |
+router.beforeEach((to, from, next) => {
|
|
| 15 |
+ // 导航钩子,全局钩子 |
|
| 16 |
+ var isLogin = sessionStorage.isLogin |
|
| 17 |
+ if(!isLogin){
|
|
| 18 |
+ if(to.name != 'Login'){
|
|
| 19 |
+ isLogin ? next() : next('/login');
|
|
| 20 |
+ }else{
|
|
| 21 |
+ next(); |
|
| 22 |
+ } |
|
| 23 |
+ }else{
|
|
| 24 |
+ next(); |
|
| 25 |
+ } |
|
| 26 |
+}) |
|
| 27 |
+ |
|
| 14 | 28 |
new Vue({
|
| 15 | 29 |
router |
| 16 | 30 |
}).$mount('#app')
|
@@ -29,6 +29,7 @@ export default [{
|
||
| 29 | 29 |
children: [ |
| 30 | 30 |
{
|
| 31 | 31 |
path: 'login', |
| 32 |
+ name: 'Login', |
|
| 32 | 33 |
component: Login |
| 33 | 34 |
}, |
| 34 | 35 |
{
|
@@ -1,7 +1,7 @@ |
||
| 1 | 1 |
<template> |
| 2 | 2 |
<div id="login"> |
| 3 | 3 |
<div class="body"> |
| 4 |
- <p>腾龙后台管理系统</p> |
|
| 4 |
+ <p>腾龙维修服务系统</p> |
|
| 5 | 5 |
<el-form ref="form" :model="form" :rules="rules"> |
| 6 | 6 |
<el-form-item label="" prop="account"> |
| 7 | 7 |
<el-input placeholder="账户名" v-model="form.account"></el-input> |
@@ -42,6 +42,7 @@ export default {
|
||
| 42 | 42 |
if (response.data.status == 200) {
|
| 43 | 43 |
sessionStorage.isLogin = true |
| 44 | 44 |
sessionStorage.admin_type = response.data.data.admin_type |
| 45 |
+ sessionStorage.admin_id = response.data.data.admin_id |
|
| 45 | 46 |
if (response.data.data.admin_type == 1) {
|
| 46 | 47 |
sessionStorage.qrurl = response.data.data.qrurl |
| 47 | 48 |
self.$router.replace({path: "/"})
|
@@ -1,5 +1,6 @@ |
||
| 1 | 1 |
<template lang="html"> |
| 2 | 2 |
<div id="maintain"> |
| 3 |
+ <div class="maintain-content"> |
|
| 3 | 4 |
<div class="filter"> |
| 4 | 5 |
<el-autocomplete |
| 5 | 6 |
popper-class="my-autocomplete" |
@@ -19,41 +20,72 @@ |
||
| 19 | 20 |
<el-button slot="append" icon="el-icon-search" @click="submit"></el-button> |
| 20 | 21 |
</el-input> |
| 21 | 22 |
</div> |
| 22 |
- <div class="table"> |
|
| 23 |
+ <div class="table"> |
|
| 24 |
+ <el-table |
|
| 25 |
+ v-loading="loading" |
|
| 26 |
+ :data="queryRes" |
|
| 27 |
+ stripe |
|
| 28 |
+ align="center" |
|
| 29 |
+ header-align="center" |
|
| 30 |
+ :empty-text="tableEmptyText"> |
|
| 31 |
+ <el-table-column |
|
| 32 |
+ prop="model_name" |
|
| 33 |
+ label="型号" |
|
| 34 |
+ width="80"> |
|
| 35 |
+ </el-table-column> |
|
| 36 |
+ <el-table-column |
|
| 37 |
+ prop="serialNo" |
|
| 38 |
+ label="序列号" |
|
| 39 |
+ width="80"> |
|
| 40 |
+ </el-table-column> |
|
| 41 |
+ <el-table-column |
|
| 42 |
+ prop="coupon_info[0].coupon_value" |
|
| 43 |
+ label="维修券金额" |
|
| 44 |
+ width="100"> |
|
| 45 |
+ </el-table-column> |
|
| 46 |
+ <el-table-column |
|
| 47 |
+ prop="coupon_info[0].coupon_expire_at" |
|
| 48 |
+ label="维修券到期日期" |
|
| 49 |
+ width="200"> |
|
| 50 |
+ </el-table-column> |
|
| 51 |
+ <el-table-column |
|
| 52 |
+ label="状态" |
|
| 53 |
+ width="80"> |
|
| 54 |
+ <template slot-scope="scope"> |
|
| 55 |
+ <p v-if="!scope.row.submit_during_activity">无优惠券</p> |
|
| 56 |
+ <p v-else-if="scope.row.has_used">已核销</p> |
|
| 57 |
+ <p v-else-if="scope.row.coupon_info[0].coupon_has_expired">已过期</p> |
|
| 58 |
+ <el-button |
|
| 59 |
+ size="mini" |
|
| 60 |
+ @click="handleClick(scope.$index, scope.row)" v-else>核销</el-button> |
|
| 61 |
+ </template> |
|
| 62 |
+ </el-table-column> |
|
| 63 |
+ </el-table> |
|
| 64 |
+ </div> |
|
| 65 |
+ </div> |
|
| 66 |
+ <div class="maintain-record"> |
|
| 67 |
+ <h3>核销记录</h3> |
|
| 68 |
+ <div class="line"></div> |
|
| 23 | 69 |
<el-table |
| 24 |
- v-loading="loading" |
|
| 25 |
- :data="queryRes" |
|
| 26 |
- stripe |
|
| 27 |
- style="width: 100%" |
|
| 70 |
+ :data="maintainRecord" |
|
| 71 |
+ :cell-style="maintainRecordCellStyle" |
|
| 72 |
+ :header-cell-style="maintainRecordHeaderCellStyle" |
|
| 73 |
+ header-align="center" |
|
| 28 | 74 |
:empty-text="tableEmptyText"> |
| 29 | 75 |
<el-table-column |
| 30 | 76 |
prop="model_name" |
| 31 | 77 |
label="型号" |
| 32 |
- width="200"> |
|
| 78 |
+ width="80"> |
|
| 33 | 79 |
</el-table-column> |
| 34 | 80 |
<el-table-column |
| 35 | 81 |
prop="serialNo" |
| 36 | 82 |
label="序列号" |
| 37 |
- width="200"> |
|
| 83 |
+ width="80"> |
|
| 38 | 84 |
</el-table-column> |
| 39 | 85 |
<el-table-column |
| 40 |
- prop="coupon_info[0].coupon_value" |
|
| 41 |
- label="优惠券金额" |
|
| 42 |
- width="200"> |
|
| 43 |
- </el-table-column> |
|
| 44 |
- <el-table-column |
|
| 45 |
- prop="coupon_info[0].coupon_expire_at" |
|
| 46 |
- label="优惠券到期日期" |
|
| 47 |
- width="200"> |
|
| 48 |
- </el-table-column> |
|
| 49 |
- <el-table-column |
|
| 50 |
- label="状态"> |
|
| 51 |
- <template slot-scope="scope"> |
|
| 52 |
- <p v-if="scope.row.has_used">已核销</p> |
|
| 53 |
- <el-button |
|
| 54 |
- size="mini" |
|
| 55 |
- @click="handleClick(scope.$index, scope.row)" v-else>核销</el-button> |
|
| 56 |
- </template> |
|
| 86 |
+ prop="used_at" |
|
| 87 |
+ label="核销日期" |
|
| 88 |
+ width="100"> |
|
| 57 | 89 |
</el-table-column> |
| 58 | 90 |
</el-table> |
| 59 | 91 |
</div> |
@@ -70,7 +102,10 @@ export default {
|
||
| 70 | 102 |
selectModel: {},
|
| 71 | 103 |
queryRes: [], |
| 72 | 104 |
loading: false, |
| 73 |
- tableEmptyText: "暂无数据" |
|
| 105 |
+ tableEmptyText: "暂无数据", |
|
| 106 |
+ maintainRecord: [], |
|
| 107 |
+ maintainRecordCellStyle: {"font-size":"11px"},
|
|
| 108 |
+ maintainRecordHeaderCellStyle: {"font-size": "14px"}
|
|
| 74 | 109 |
} |
| 75 | 110 |
}, |
| 76 | 111 |
created() {
|
@@ -79,6 +114,7 @@ export default {
|
||
| 79 | 114 |
.then(function (response) {
|
| 80 | 115 |
self.models = response.data.data.models |
| 81 | 116 |
}) |
| 117 |
+ this.getMaintainRecord() |
|
| 82 | 118 |
}, |
| 83 | 119 |
methods: {
|
| 84 | 120 |
querySearch(queryString, cb) {
|
@@ -102,7 +138,8 @@ export default {
|
||
| 102 | 138 |
this.loading = true |
| 103 | 139 |
var self = this |
| 104 | 140 |
this.$axios.post('admin/querysn', {"model_id": this.selectModel.model_id,
|
| 105 |
- "sn": this.selectSerialNo}) |
|
| 141 |
+ "sn": this.selectSerialNo, |
|
| 142 |
+ "admin_id": sessionStorage.admin_id}) |
|
| 106 | 143 |
.then(function (response) {
|
| 107 | 144 |
self.$nextTick(function (){
|
| 108 | 145 |
self.loading = false |
@@ -111,31 +148,28 @@ export default {
|
||
| 111 | 148 |
self.clear() |
| 112 | 149 |
return |
| 113 | 150 |
} |
| 114 |
- if (!data.submit_during_activity) {
|
|
| 115 |
- self.clear() |
|
| 116 |
- self.tableEmptyText = "无优惠券" |
|
| 117 |
- } else {
|
|
| 118 |
- if (data.has_used) {
|
|
| 119 |
- self.clear() |
|
| 120 |
- self.tableEmptyText = "优惠券已使用" |
|
| 121 |
- } else {
|
|
| 122 |
- self.queryRes = [response.data.data] |
|
| 123 |
- } |
|
| 151 |
+ if (data.coupon_info[0].coupon_value == 0) {
|
|
| 152 |
+ data.coupon_info = [{"coupon_expire_at": "-","coupon_value": "-"}]
|
|
| 124 | 153 |
} |
| 125 |
- }) |
|
| 154 |
+ self.queryRes = [response.data.data] |
|
| 126 | 155 |
|
| 156 |
+ }) |
|
| 127 | 157 |
}) |
| 128 | 158 |
}, |
| 129 | 159 |
|
| 130 | 160 |
handleClick(index, row) {
|
| 131 | 161 |
var self = this |
| 132 | 162 |
this.$axios.post('admin/usecoupon', {"model_id": this.selectModel.model_id,
|
| 133 |
- "sn": this.selectSerialNo}) |
|
| 163 |
+ "sn": this.selectSerialNo, |
|
| 164 |
+ "admin_id": sessionStorage.admin_id}) |
|
| 134 | 165 |
.then(function (response) {
|
| 135 | 166 |
self.$nextTick(function (){
|
| 136 | 167 |
self.clear() |
| 137 | 168 |
self.tableEmptyText = "暂无数据" |
| 138 |
- alert("已核销")
|
|
| 169 |
+ self.getMaintainRecord() |
|
| 170 |
+ if (response.status == 200 && response.data.status == 200) {
|
|
| 171 |
+ alert("已核销")
|
|
| 172 |
+ } |
|
| 139 | 173 |
}) |
| 140 | 174 |
}) |
| 141 | 175 |
}, |
@@ -145,6 +179,20 @@ export default {
|
||
| 145 | 179 |
this.selectModel = {}
|
| 146 | 180 |
this.selectSerialNo = "" |
| 147 | 181 |
this.selectModelName = "" |
| 182 |
+ }, |
|
| 183 |
+ |
|
| 184 |
+ getMaintainRecord() {
|
|
| 185 |
+ var self = this |
|
| 186 |
+ this.$axios.post('admin/queryusedsn', {"admin_id": sessionStorage.admin_id})
|
|
| 187 |
+ .then(function (response) {
|
|
| 188 |
+ let logs = response.data.data.logs |
|
| 189 |
+ for (var log of logs) {
|
|
| 190 |
+ let date = new Date(log.used_at) |
|
| 191 |
+ console.log(date); |
|
| 192 |
+ log.used_at = date.getFullYear() + "/" + (date.getMonth() + 1) + "/" + date.getDate() + " " + date.getHours() + ":" + date.getMinutes() |
|
| 193 |
+ } |
|
| 194 |
+ self.maintainRecord = response.data.data.logs |
|
| 195 |
+ }) |
|
| 148 | 196 |
} |
| 149 | 197 |
} |
| 150 | 198 |
} |
@@ -153,20 +201,43 @@ export default {
|
||
| 153 | 201 |
<style lang="scss"> |
| 154 | 202 |
#maintain {
|
| 155 | 203 |
display: flex; |
| 156 |
- flex-direction: column; |
|
| 157 | 204 |
justify-content: center; |
| 158 |
- align-items: center; |
|
| 159 |
- width: 100%; |
|
| 160 |
- height: 200px; |
|
| 161 |
- .filter {
|
|
| 205 |
+ .maintain-content {
|
|
| 162 | 206 |
display: flex; |
| 163 |
- flex-direction: row; |
|
| 207 |
+ flex-direction: column; |
|
| 208 |
+ justify-content: center; |
|
| 209 |
+ align-items: center; |
|
| 210 |
+ width: 700px; |
|
| 211 |
+ height: 200px; |
|
| 212 |
+ .filter {
|
|
| 213 |
+ display: flex; |
|
| 214 |
+ flex-direction: row; |
|
| 215 |
+ } |
|
| 216 |
+ .table {
|
|
| 217 |
+ margin-top: 50px; |
|
| 218 |
+ width: 80%; |
|
| 219 |
+ max-width: 900px; |
|
| 220 |
+ height: 100px; |
|
| 221 |
+ } |
|
| 164 | 222 |
} |
| 165 |
- .table {
|
|
| 166 |
- margin-top: 50px; |
|
| 167 |
- width: 80%; |
|
| 168 |
- max-width: 900px; |
|
| 169 |
- height: 100px; |
|
| 223 |
+ .maintain-record {
|
|
| 224 |
+ display: flex; |
|
| 225 |
+ flex-direction: column; |
|
| 226 |
+ justify-content: center; |
|
| 227 |
+ width: 280px; |
|
| 228 |
+ background: #fff; |
|
| 229 |
+ h3 {
|
|
| 230 |
+ margin-left: 5px; |
|
| 231 |
+ } |
|
| 232 |
+ .line {
|
|
| 233 |
+ width: 100%; |
|
| 234 |
+ height: 1px; |
|
| 235 |
+ background: #E5EAF2; |
|
| 236 |
+ } |
|
| 237 |
+ .el-table {
|
|
| 238 |
+ width: 260px; |
|
| 239 |
+ margin-left: 10px; |
|
| 240 |
+ } |
|
| 170 | 241 |
} |
| 171 | 242 |
} |
| 172 | 243 |
</style> |